import axios from "axios";
import Vue from 'vue'

// 配置axios全局的baseURL

// 添加请求拦截器
axios.interceptors.request.use(function (config) {
  console.log(config);
  // 在发送请求之前做些什么
  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});

// 添加响应拦截器
axios.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  return response.data;
}, function (error) {
  // 对响应错误做点什么
  return Promise.reject(error);
});

//为axios定义一个进行和并请求的功能
axios.combineRequest = function(urls, callBack){
    var promises = [];
    for(let i = 0; i < urls.length; i++){
      let pro = this.get(urls[i]);
      promises.push(pro);
    }
    this.all(promises).then(this.spread(callBack));
} 

//添加一个source对象，用来创建取消取消网络请求的cancleToken
let CancelToken = axios.CancelToken; 
Vue.prototype.$source = CancelToken.source();
Vue.prototype.$CancelToken = CancelToken;
Vue.prototype.$axios = axios;

export default Vue;